<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
/* var arr = [1,2,3,4];
for(var i=0;i<arr.length;i++){
  arr.push("5");
  
} */
// 解决传址问题 
        // 数组 对象
        // var arr1 = [1,2,3,4];
        // // var arr2 = arr;
        // var arr2 = [];
        // // for(var i=0;i<arr1.length;i++){
        // //     arr2.push(arr1[i]);
        // // }
        // for(var key in arr1){
        //     arr2[key] = arr1[key];
        // }

        // console.log(arr2);
        
        // arr2[1] = 6;
        // console.log(arr1);
        // console.log(arr2);

        // var obj = {
        //     name:"张三",
        //     age:20
        // }

        // var obj2 = {}

        // for(var key in obj){
        //     obj2[key] = obj[key];
        // }
       
        // obj2.age = 30;
        // console.log(obj);
        // console.log(obj2);



        // 封装一个函数 实现拷贝 数组 或者是对象
        // 拷贝一层

     /*    function copy(arg){
            // 生成一个空的对象或者数组 根据传递过来的obj的类型来生成；
            var res = Array.isArray(arg)?[]:{};
            // console.log(res);
            for(var key in arg){
                res[key] = arg[key];
            }
            // console.log(res);
            return res;
        } */
         /* var arr = [1,2,3];
       var newarr = copy(arr);
        
     
        console.log(arr);
      console.log(newarr);  */

/* 
      var obj = {
         name:"张三",
         myhobby:{
               a:"篮球",
              b:"足球"
        }
      };
       var obj2 = copy(obj);
        obj2.name = "李四";
        obj2.myhobby.a = "高尔夫";
      console.log(obj);
      console.log(obj2); */
        // copy(obj);

    //     var arr = [];
    //     var obj = {};
    //     // console.log(typeof arr);
    //     // console.log(typeof obj);
    //    console.log( Array.isArray(obj));

    // 拷贝函数 ----》深拷贝
 
    /* var obj = {
            name:"张三",
            age:20,
            myhobby:{
                a:"篮球",
                b:"足球",
                obj:{
                    obj:{

                    }
                }
            }
        };
    

    function deepCopy(arg){
            // 生成一个空的对象或者数组 根据传递过来的obj的类型来生成；
            var res = Array.isArray(arg)?[]:{};
            // console.log(res);
            for(var key in arg){
                if(typeof arg[key] === "object"){  // 张三  20  {a:"篮球",b:"足球"};
                    res[key]=  deepCopy(arg[key]);
                }else{
                    res[key] = arg[key];
                }
            }
            // console.log(res);
            return res;
        }

         var obj = {
            name:"张三",
            myhobby:{
                a:"篮球",
                b:"足球"
            },
            arr:[1,2,3,4]
        };
        var obj2 = deepCopy(obj);
        obj2.myhobby.a = "高尔夫";
        console.log(obj);
        console.log(obj2);
 */
        // 递归深拷贝 
/* function fn(arr){
var res = Array.isArray(arr)?[]:{};
for(var key in arr){
    if(typeof arr[key]==="object"){
res[key]=fn(arr[key])
    }else{
res[key]=arr[key]
    }
}
return res;
}
var obj = {
            name:"张三",
            myhobby:{
                a:"篮球",
                b:"足球"
            },
            arr:[1,2,3,4]
        };
var obj1 = fn(obj)
console.log(obj1)
 */

/* var obj = {
          name:"张三",
          age:20,
          test:undefined,
         fn:function(){
              console.log(111);
          }
       }
       
        var obj2 = JSON.parse( JSON.stringify( obj));
     console.log(obj);
        console.log(obj2);
       obj2.age = 30;
        console.log(obj);
      console.log(obj2);
 */
    </script>
</body>
</html>